#ifndef TYPES_H_INCLUDED
#define TYPES_H_INCLUDED

// Standard library
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

// STL
#include <vector>
#include <list>
#include <stack>
#include <queue>
#include <set>
#include <map>

// Kasper Peeters' tree
#include <tree.hh>

// Boost
#include <boost/filesystem.hpp>
#include <boost/functional/hash.hpp>
using namespace boost;

// OpenGL
#define GLEW_MX
#include <GL/glew.h>

// SDL
#include <SDL/SDL.h>
#include <SDL/SDL_haptic.h>

// AutoVersion
#include "version.h"

// Debug markers
#ifdef DEBUG
    #define DEBUG_MARKER cout << __PRETTY_FUNCTION__ << " (" << __LINE__ << ")" << endl;
    #define DEBUG_MESSAGE(msg) cout << __PRETTY_FUNCTION__ << " (" << __LINE__ << ") : " << msg << endl;
#else
    #define DEBUG_MARKER ;
    #define DEBUG_MESSAGE ;
#endif

// Singleton
#include "singleton.h"

// Serialization
class ClassId;
class Instance;
class DataStream;
#include "classid.h"
#include "instance.h"
#include "datastream.h"

#endif // TYPES_H_INCLUDED
